package com.mlx.meng.annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface DataPermissionColumn {

    /**
     * 数据权限表名称
     *
     */
    String tableName() default "";

    /**
     * 权限字段外键关系映射，格式：外键字段名:外键指向表名:外键指向字段名
     *
     */
    String[] foreignKeys() default {};


    /**
     * 不开启列数据权限：如果为true，不对列进行数据权限过滤
     *
     */
    boolean disEnable() default false;

    /**
     * setMethodName，根据权限字段名称获取对应属性的属性值进行权限判断
     * 否则：setMethodName，通过权限字段名称为方法参数获取对应权限字段的值进行权限判断
     *
     * @return
     */
    String setMethodName() default "";

    Class<?> fieldType() default Object.class;

    Class<?> valueType() default Object.class;

    int fieldTypeIndex() default 0;

    /**
     * 获取所有属性的方法名称
     * @return
     */
    String getAllFieldMethodName() default "";
}
